package Modelo;

import java.util.Collection;

public class Hielo implements Bloque {

	private boolean esFirme;
	private Mapa mapa;
	private int vidaUtil;
	
	public Hielo(Mapa mapa){
		esFirme = true;
		this.mapa=mapa;
		vidaUtil=1;
	}
	
	public String toString(){
		return new String("H");
	}
	
	/**
	 * Le informa al personaje que debe cambiar el sentido, porque choca
	 * contra el hielo
	 * @param unPersonaje
	 */
	public void alojar(Personaje unPersonaje) {
		unPersonaje.invertirSentido();
	}
	
	/**
	 * Desaloja un personaje
	 * @param unPersonaje	
	 */
	public void desalojar(Personaje unPersonaje) {
		// No hacer nada, porque, un bloque de hielo no sabe alojar	
	}
	
	/**
	 * Informa si se puede caminar sobre un bloque de hielo
	 * @return boolean
	 */
	public boolean esFirme() {
		return this.esFirme;
	}

	/**
	 * Informa si el personaje esta alojado en un bloque de hielo
	 * @param unPersonaje
	 * @return boolean
	 */
	public boolean estaAlojado(Personaje unPersonaje) {
		return false;
	}

	/**
	 * Devuelve la velocidad final que va a tener el personaje por caminar 
	 * sobre el bloque de hielo
	 * @param velocidadInicial
	 * @return Numeros
	 */
	public Numeros velocidadFinal(Numeros velocidadInicial) {
		Numeros velocidad= new Real(Constantes.velocidad);
		return velocidad.multiplicar(new Real(Constantes.aceleracionHielo));
	}
	
	/**
	 * Destruye el bloque de hielo
	 */
	
	public void destruir() {
		mapa.ModificarBloquePor(this,new Vacio(mapa));	
	}

	/**
	 * El bloque de hielo es atacado con una potencia
	 * @param potencia
	 */
	
	public void atacar(Numeros potencia){
		// el hielo no es atacable
	}
	
	/**
	 * Devuelve una coleccion de los personajes alojados en el bloque de fuego
	 * @return Collection
	 */
	
	public Collection<Personaje> getAlojados() {
		return null;
	}
}

